import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Task } from '../../pages/tasklist/task';

/*
  Generated class for the HttpDataProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class HttpDataProvider {

  private readonly baseUrl: string = 'https://api2.bmob.cn/1';
  private readonly httpOptions : Object = {
    headers : new HttpHeaders({
      'X-Bmob-Application-Id':'68e518ff27b7d28a4492bec7ea5d32c0',
      'X-Bmob-REST-API-Key':'37f6f6283556467a61313f9280a526e5',
      'Content-Type': 'application/json',
    })
  };

  constructor(public http: HttpClient) {
    console.log('获取HTTp服务加载');
  }


  /*
  获取待办事项列表
  @returns {Observable<Task[]>}  待办事项列表数据集合
  */
  getTaskList(): Observable<Task[]>{
    return this.http.get<Task[]>
    (`${this.baseUrl}/classes/ToDoList`,
    this.httpOptions).map(data => data["results"]);
  }

  /*
    获取指定待办事项
  */
  getTask(objectId:string):Observable<Task>{
    return this.http.get<Task>
    (`${this.baseUrl}/classes/ToDoList/${objectId}`,
    this.httpOptions);
  }

  /*
    新增待办事项
  */
  addTask(task:Task): Observable<Task>{
    let _task = {title:task.title,status:task.status,description:task.description};
    return this.http.post<Task>(`${this.baseUrl}/classes/ToDoList/`,_task,
    this.httpOptions);
  }
 
  /*
    更新指定待办事项
  */
  updateTask(task:Task):Observable<Task>{
    let _task = {title:task.title,status:task.status,description:task.description};
    return this.http.put<Task>(`${this.baseUrl}/classes/ToDoList/${task.objectId}`,_task,
    this.httpOptions);
  }

  deleteTask(task:Task):Observable<{}>{
    return this.http.delete(`${this.baseUrl}/classes/ToDoList/${task.objectId}`,
    this.httpOptions);
  }

  }
